/**
 * 二维棋盘，给定起点和终点，两种移动方式：
 * 1. 四邻域移动一格
 * 2. 跳到中心对称的位置
 * 问从起点到终点的最少步数
 * 第2种移动显然最多只要用一次即可，第1种的数量就是曼哈顿距离
 * 因此只需求min(dis(S, T), dis(S的对称点, T))即可
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>

using Real = long double;
using llt = long long;
using pii = pair<int, int>;
using vi = vector<int>;

llt const MOD = 998244353LL;

int N;
pii S, T;

pii get(pii p){
    return {N - p.first + 1, N - p.second + 1};
}

llt dis(pii a, pii b){
    return 0LL + abs(a.first - b.first) + abs(a.second - b.second);
}

llt proc(){
    auto s = get(S);
    return min(dis(S, T), dis(s, T) + 1);
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int nofakse = 1;
    // cin >> nofakse;
    while(nofakse--){
        cin >> N >> S.first >> S.second >> T.first >> T.second;
        cout << proc() << endl;
    }
    return 0;
}